home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1998 #4 / Amiga Plus CD - 1998 - No. 4.iso / pd / tools / ifx / ifxnote.e < prev    next >
Text File  |  1998-01-02  |  2KB  |  113 lines

  1. ->
  2. -> IFXNote.e
  3. ->
  4. -> Add a FileNote to all sounds that have an ID associated.
  5. ->
  6.  
  7. MODULE 'dos/dos'
  8. MODULE 'other/split'
  9. MODULE 'tools/cli'
  10.  
  11.  
  12.    ->
  13.    -> load_config()
  14.    ->
  15.  
  16. PROC load_config(filepath) HANDLE
  17.    DEF file, buf, done=0
  18.    
  19.    -> Write Info
  20.    WriteF('FILE \s\n', filepath)
  21.  
  22.    -> Make sure filepath is OK
  23.    IF filepath=NIL OR StrLen(filepath)=0
  24.       filepath := 's:IFX.ids'
  25.    ENDIF
  26.    
  27.    -> Open the file
  28.    file := Open(filepath, MODE_OLDFILE)
  29.    IF file=NIL THEN Throw("INIT", "LOAD")
  30.    
  31.    -> Create a buffer
  32.    NEW buf[1024]
  33.    IF buf=NIL THEN Throw("MEM", ' (for read buffer)')
  34.       
  35.    -> Read & Parse!
  36.    WHILE done=0
  37.       -> Read a line
  38.       IF Fgets(file, buf, 1024)
  39.          -> Parse it
  40.          comment_parse(buf)
  41.       ELSE
  42.          -> EOF! Return...
  43.          done := 1
  44.       ENDIF
  45.    ENDWHILE
  46.    
  47.    -> Done!
  48. EXCEPT DO
  49.    IF file THEN Close(file)
  50.    IF buf  THEN END buf
  51.       
  52.    RETURN exception, exceptioninfo
  53. ENDPROC
  54.  
  55. PROC comment_parse(str:PTR TO CHAR) HANDLE
  56.    DEF list:PTR TO LONG
  57.    DEF comment[81]:STRING
  58.  
  59.    -> Make sure we HAVE a string
  60.    IF str=NIL THEN RETURN
  61.  
  62.    -> Set string to lower case
  63.    LowerStr(str)
  64.  
  65.    -> Divide our arg into a more useful form
  66.    list := argSplit(str)
  67.    IF list=NIL THEN Throw("MEM", ' (for arg list)')
  68.  
  69.    ->
  70.    -> All types/commands MUST be longer then 1 char, otherwise
  71.    -> they will be considered comments
  72.    ->
  73.    
  74.    IF StrLen(list[0])>1
  75.       -> Check if it is a sound
  76.       IF StrCmp(list[0], 'sound') OR StrCmp(list[0], 'psound')
  77.           StringF(comment, 'used as IFX id "\s"', list[1])
  78.           IF SetComment(list[2], comment)
  79.               WriteF('\t\s \s \s\n', list[0], list[2], comment)
  80.           ELSE
  81.               WriteF('\t*** Error with \s (\s)\n', list[2], list[1])
  82.           ENDIF
  83.       ELSEIF StrCmp(list[0], 'defprefsdir')
  84.           cdup()
  85.           cd(list[1])
  86.           WriteF('DIR \s\n', list[1])
  87.       ELSEIF StrCmp(list[0], 'config') OR StrCmp(list[0], 'include')
  88.           load_config(list[1])
  89.       ENDIF
  90.       IF CtrlC() THEN Raise(NIL)
  91.    ENDIF
  92. EXCEPT DO
  93.    -> Free the list
  94.    IF list THEN DisposeLink(list)
  95.       
  96.    IF exception THEN ReThrow()
  97. ENDPROC NIL
  98.  
  99. ->
  100. -> MAIN
  101. ->
  102.  
  103. PROC main() HANDLE
  104.     DEF currdir:PTR TO CHAR
  105.     
  106.     cli_lastdir := NIL
  107.     currdir := getcd()
  108.     load_config('S:IFX.ids')
  109. EXCEPT DO
  110. ->    cdhome()
  111.     cd(currdir)
  112.     IF exception THEN WriteF('Error during commenting process.\n')
  113. ENDPROC